package everydayone.gameOfLife;
/**
 * @Date 2020/04/02
 * @author 王光浩
 * @Thinking 使用暴力法解决
 * @Analysis 时间复杂度O（n*m），空间复杂度O（n*m）
 */
public class MyMethodOnw {
	public void gameOfLife(int[][] board) {
		boolean[][] arr=new boolean[board.length][board[0].length];
		for(int i=0;i<board.length;i++) {
			for(int j=0;j<board[0].length;j++) {
				int alive=helper(board,i,j);
				if(alive<2 || alive>3)continue;
				else if(alive==2) arr[i][j]=board[i][j]==1?true:false;
				else arr[i][j]=true;
			}
		}
		for(int i=0;i<arr.length;i++) {
			for(int j=0;j<arr[0].length;j++) {
				if(arr[i][j])board[i][j]=1;
				else board[i][j]=0;
			}
		}
    }
	private int helper(int[][] board,int x,int y) {
		int[] indexX= {-1,1,0,0,-1,-1,1,1,}; //上下左右，左上，右上，右下，左下
		int[] indexY= {0,0,-1,1,-1,1,1,-1};
		int count=0;  //统计存活细胞的数目
		for(int i=0;i<8;i++) {
			int currentX=x+indexX[i];
			int currentY=y+indexY[i];
			if( (currentX>=0 && currentX<board.length) && (currentY>=0 && currentY<board[0].length)) {
				if(board[currentX][currentY]==1)count++;
			}
		}
		return count;
	}
}
